﻿//Created by Action Script Viewer - http://www.buraks.com/asv
package com.fminutes.vinciIsometric.core {
    import com.fminutes.vinciIsometric.core.*;
    import __AS3__.vec.*;

    class IsoMap {

        private var _map:Vector.<Vector.<IsoMapItem>>;
        private var _xNum:int;
        private var _zNum:int;

        public function IsoMap(_arg1:int, _arg2:int){
            this._xNum = _arg1;
            this._zNum = _arg2;
            this.createNullMap();
        }
        private function createNullMap():void{
            var _local2:int;
            this._map = new Vector.<Vector.<IsoMapItem>>(this._xNum, true);
            var _local1:int;
            while (_local1 < this._xNum) {
                this._map[_local1] = new Vector.<IsoMapItem>(this._zNum, true);
                _local2 = 0;
                while (_local2 < this._zNum) {
                    this._map[_local1][_local2] = new IsoMapItem(_local1, _local2);
                    _local2++;
                };
                _local1++;
            };
        }
        public function getMapItem(_arg1:int, _arg2:int):IsoMapItem{
            if ((((((((_arg1 < 0)) || ((_arg1 >= this._xNum)))) || ((_arg2 < 0)))) || ((_arg2 >= this._zNum)))){
                return (null);
            };
            return (this._map[_arg1][_arg2]);
        }
        public function addIso(_arg1:IsoObject):void{
            var _local4:IsoMapItem;
            var _local5:int;
            var _local6:int;
            var _local7:int;
            var _local8:int;
            if (_arg1.xyz == null){
                return;
            };
            var _local2:IsoPosition = _arg1.isoPosition;
            var _local3:IsoPosition = _arg1.isoMaxPosition;
            if ((((_local2.x == _local3.x)) && ((_local2.z == _local3.z)))){
                _local4 = this.getMapItem(_local2.x, _local2.z);
                if (_local4 != null){
                    _local4.addIso(_arg1);
                };
            } else {
                _local5 = _local2.x;
                _local6 = _local3.x;
                while (_local5 <= _local6) {
                    _local7 = _local2.z;
                    _local8 = _local3.z;
                    while (_local7 <= _local8) {
                        _local4 = this.getMapItem(_local5, _local7);
                        if ((((((_local5 < this._xNum)) && ((_local7 < this._zNum)))) && (!((_local4 == null))))){
                            _local4.addIso(_arg1);
                        };
                        _local7++;
                    };
                    _local5++;
                };
            };
        }
        public function removeIso(_arg1:IsoObject):void{
            var _local4:IsoMapItem;
            var _local5:int;
            var _local6:int;
            var _local7:int;
            var _local8:int;
            if (_arg1.xyz == null){
                return;
            };
            var _local2:IsoPosition = _arg1.isoPosition;
            var _local3:IsoPosition = _arg1.isoMaxPosition;
            if ((((_local2.x == _local3.x)) && ((_local2.z == _local3.z)))){
                _local4 = this.getMapItem(_local2.x, _local2.z);
                _local4.removeIso(_arg1);
            } else {
                _local5 = _local2.x;
                _local6 = _local3.x;
                while (_local5 <= _local6) {
                    _local7 = _local2.z;
                    _local8 = _local3.z;
                    while (_local7 <= _local8) {
                        _local4 = this.getMapItem(_local5, _local7);
                        _local4.removeIso(_arg1);
                        _local7++;
                    };
                    _local5++;
                };
            };
        }

    }
}//package com.fminutes.vinciIsometric.core 
